package com.ys.nms.module.business.controller.admin.redData;

import com.baomidou.mybatisplus.core.toolkit.StringUtils;
import lombok.Data;

import java.util.HashMap;
import java.util.Map;

/**
        * 多列RRD数据点
 */
@Data
public class RrdMultiDataPoint {
    private Long timestamp;                    // 时间戳
    private Map<String, String> metrics;       // 多列指标数据
    private Map<String, Boolean> validFlags;   // 各列有效性标志

    public RrdMultiDataPoint() {
        this.metrics = new HashMap<>();
        this.validFlags = new HashMap<>();
    }

    public RrdMultiDataPoint(Long timestamp) {
        this();
        this.timestamp = timestamp;
    }

    /**
     * 添加指标数据
     */
    public void addMetric(String metricName, String value) {
        metrics.put(metricName, value);
        validFlags.put(metricName, StringUtils.isNotEmpty(value));
    }

    /**
     * 获取指标值
     */
    public String getMetric(String metricName) {
        return metrics.get(metricName);
    }

    /**
     * 检查指标是否有效
     */
    public boolean isMetricValid(String metricName) {
        return validFlags.getOrDefault(metricName, false);
    }

    /**
     * 检查是否有任何有效数据
     */
    public boolean hasValidData() {
        return validFlags.values().stream().anyMatch(valid -> valid);
    }

    /**
     * 获取有效指标数量
     */
    public int getValidMetricCount() {
        return (int) validFlags.values().stream().filter(valid -> valid).count();
    }
}